<?php
class CodigoDocumentosAlmacenController extends AppController{

    var $name = 'CodigoDocumentosAlmacen';
    var $appModule = 'Maestros';
    var $helpers = array('Html', 'Form', 'Javascript', 'Codigo', 'Time','GetList');
    var $components = array('RequestHandler');
    var $paginate = array('order'=>array('id'));
    var $uses = array('CodigoDocumentosAlmacene');

    function index() {
        //verificando si se hizo busqueda por formulario
        $q = $this->getBusqueda($this->data['CodigoDocumentosAlmacene']['busqueda']);

        $conditions['CodigoDocumentosAlmacene.activo'] = true;
        if (!empty($q)){
            $conditions['OR'] = array(
                'CodigoDocumentosAlmacene.descripcion  SIMILAR TO' => "%$q%",
                'CodigoDocumentosAlmacene.simbolo  SIMILAR TO' => "%$q%"
            );
            if (is_numeric($q))
                $conditions['OR']['CodigoDocumento.id']=explode('|', str_replace(array('(',')'),'',$q));
        }
        $this->paginate['CodigoDocumentosAlmacene'] = array(
            'conditions'=>$conditions,
            'order'=>'id',
            'recirsive'=>-1
        );
        $codigoDocumentos = $this->paginate('CodigoDocumentosAlmacene');
        $this->set(compact('codigoDocumentos'));
        $this->set('limite', $this->limite);
    }

    function view($id = null) {
            if (!$id) {
                    $this->Session->setFlash(__('Id de Codigo de documento no valido.', true));
                    $this->redirect(array('action'=>'index'));
            }
            $this->CodigoDocumentosAlmacene->recursive = -1;
            $codigo = $this->CodigoDocumentosAlmacene->read(null, $id);
            $this->set('codigoDocumento', $codigo);
    }

    function add(){
        if (!empty($this->data)){
            $done = true;
            $this->CodigoDocumentosAlmacene->begin();
            try{
                $this->CodigoDocumentosAlmacene->create();
                $usuario = $this->Session->read('Usuario');
                $this->data['CodigoDocumentosAlmacene']['activo'] = true;
                $this->data['CodigoDocumentosAlmacene']['usuario_creacion_id'] = $this->usuarioId();
                $this->data['CodigoDocumentosAlmacene']['fecha_creacion'] = 'now()';
                
                if ($this->CodigoDocumentosAlmacene->save($this->data)){
                    $this->CodigoDocumentosAlmacene->commit();
                    $this->Session->setFlash('Se ha adicionado correctamente el Codigo de Documento');
                    $this->redirect(array('action'=>'index'));
                } else {
                    $this->CodigoDocumentosAlmacene->rollback();
                    $this->Session->setFlash('Se ha producido un error al adicionar el Codigo de Documento');
                }
            } catch(Exception $e) {
                    $this->CodigoDocumentosAlmacene->rollback();
                    $this->Session->setFlash('Se ha producido un error al adicionar el Codigo de Documento');
            }
        }
    }

    function edit($id = null){
        if (!$id) {
            $this->Session->setFlash(__('Id de Codigo de Documento invalido', true));
            $this->redirect(array('action'=>'index'));
        }
        if (!empty($this->data)){
            $done = true;
            $this->CodigoDocumentosAlmacene->begin();
            try{
                $this->CodigoDocumentosAlmacene->create();
                $this->data['CodigoDocumentosAlmacene']['usuario_modificacion_id'] = $this->_usuario['id'];
                $this->data['CodigoDocumentosAlmacene']['fecha_modificacion'] = 'now()';
                if ($this->CodigoDocumentosAlmacene->save($this->data)){
                    $this->CodigoDocumentosAlmacene->commit();
                    $this->Session->setFlash('Se ha modificado correctamente el Codigo de Documento');
                    $this->redirect(array('action'=>'index'));
                } else {
                    $this->CodigoDocumentosAlmacene->rollback();
                    $this->Session->setFlash('Se ha producido un error al adicionar el Codigo de Documento');
                }
            } catch(Exception $e){
                $this->CodigoDocumentosAlmacene->rollback();
                $this->Session->setFlash('Se ha producido un error al adicionar el Codigo de Documento');
            }
        } else {
            $this->CodigoDocumentosAlmacene->recursive = -1;
            $this->data = $this->CodigoDocumentosAlmacene->read(null, $id);
        }
    }

    function delete($id = null, $verbose = true){
        if (!$id) {
            if ($verbose){
                $this->Session->setFlash(__('Id de Codigo de Documento invalido', true));
                $this->redirect(array('action'=>'index'));
            }
            else return false;
        }
        $this->CodigoDocumentosAlmacene->recursive = -1;
        $data = $this->CodigoDocumentosAlmacene->read(null, $id);
        $data['CodigoDocumentosAlmacene']['activo']=0;
        $data['CodigoDocumentosAlmacene']['usuario_borrado_id']=$this->usuarioId();
        $data['CodigoDocumentosAlmacene']['fecha_borrado']='now()';

        if (!$this->CodigoDocumentosAlmacene->save($data) && !verbose)
                return false;
        if ($verbose){
            $this->Session->setFlash(__('Codigo de Documento eliminado', true));
            $this->redirect(array('action'=>'index'));
        }
        else return true;
    }

    function process(){
        $op = isset($this->params['form']['delete'])?'eliminar':'anular';
        $flag = true;
        $i = 0;
        foreach($this->data as $item){
            if ($item['id']!='0'){
                if(isset($this->params['form']['delete'])){ // eliminar
                    $flag = $this->delete($item['id'], false);
                }
                if (!$flag){
                    $data = $this->CodigoDocumentosAlmacene->read(null, $item['CodigoDocumentosAlmacene']['id']);
                    $this->Session->setFlash(__("Se ha producido un error al $op el Codigo de Documento #".$data['CodigoDocumentosAlmacene']['id'], true));
                    break;
                }
            }
            $i++;
        }
        if ($flag && $i > 0){
            $this->Session->setFlash(__("El proceso de $op Codigos de Documentos se ha realizado con exito.", true));
        }
        $this->redirect(array('action'=>'index'));
    }

    function buscar($q = null){
        if(!empty($this->data['CodigoDocumentosAlmacene']['q'])){
            $q = $this->data['CodigoDocumentosAlmacene']['q'];
        } elseif (!empty($this->params['url']['q'])){
            $q = $this->params['url']['q'];
        } elseif (!empty($this->params['form']['q'])){
            $q = $this->params['form']['q'];
        }

        if(empty($q)){
            $result = array('Error'=>'No se establecieron los parámetros adecuadamente');
        } else {
            $conditions = array(
                    'CodigoDocumentosAlmacene.activo' => 1,
                    'OR'=>array(
                            'cast(CodigoDocumentosAlmacene.id as varchar) LIKE' => strtoupper($q).'%',
                            'CodigoDocumentosAlmacene.descripcion LIKE' => '%'.strtoupper($q).'%')
            );
            $fields = array(
                    'CodigoDocumentosAlmacene.id',
                    'CodigoDocumentosAlmacene.descripcion',
                    'CodigoDocumentosAlmacene.simbolo',
            );

            $this->CodigoDocumentosAlmacene->Behaviors->attach('Containable');
            $result = $this->CodigoDocumentosAlmacene->find('all', array(
                    'conditions' => $conditions,
                    'fields' => $fields,
                    'order'=>array('CodigoDocumentosAlmacene.descripcion ASC')
            ));
        }

        //definiendo valores en caso q sea una petición para autocompletado
        if(!empty($this->params['url']['autocomplete']) || !empty($this->params['form']['autocomplete'])){
            $res = array();
            foreach($result as $value){
                    $res[] = array('value'=>$value['CodigoDocumentosAlmacene']['id'], 'display'=>'<span style="color:gray;font-size:.9em">'.$value['CodigoDocumentosAlmacene']['id'].'</span><div style="float:right;font-size:.8em" title="'.$value['CodigoDocumentosAlmacene']['descripcion'].'">'. $this->neat_trim($value['CodigoDocumentosAlmacene']['descripcion'], 24) .'</div>');
            }
            $result = $res;
        }

        if ($this->RequestHandler->isAjax()){
            $this->_ajaxify($result);
        } else {
            return $result;
        }
    }
}
?>
